System and method to facilitate configuration of a controlling device

ABSTRACT

A system and method wherein geographic data is used to configure a controlling device to control operations of a target device and/or to configure the controlling device to control tuning operations of a target device. The system additionally provides for the harmonization of controlling device configurations made on the controlling device and/or a remote computer.

RELATED APPLICATION INFORMATION

This application claims the benefit of and is a continuation of U.S.application Ser. No. 12/490,978, filed on Jun. 24, 2009, whichapplication claims the benefit of U.S. Provisional Application No.61/076,226, filed Jun. 27, 2008.

Through U.S. application Ser. No. 12/490,978, this applicationadditionally claims the benefit of, and is a continuation-in-part of,U.S. application Ser. No. 12/421,065, filed Apr. 9, 2009, which is adivisional of U.S. application Ser. No. 11/340,442, filed Jan. 26, 2006,which is a divisional of U.S. application Ser. No. 10/288,727, filedNov. 6, 2002, which application claimed the benefit of U.S. ProvisionalApplication Nos. 60/344,020, filed Dec. 20, 2001, and 60/344,774, filedNov. 20, 2001.

The disclosure within each of these applications is incorporated hereinby reference in its entirety.

BACKGROUND

This invention relates generally to controlling devices, such as forexample universal remote controls, and more specifically to systems andmethods for configuration of such devices, for example matchingcontrolling device commands to the appliances to be controlled, definingfavorite channels, etc.

As is known in the art, in order to associate a universal controllingdevice with an appliance to be controlled, data may be provided to thecontrolling device that serves to identify an intended target applianceby its type and make (and sometimes model). Such data may allow thecontrolling device to identify appropriate command data within a libraryof command data that is pre-stored in or downloaded into the controllingdevice, and to transmit recognizable commands in a format appropriatefor such identified appliances. Multiple methods for providing suchsetup data have been proposed, including the known setup proceduresdescribed, for example, in U.S. Pat. Nos. 4,959,810, 5,614,906, and6,225,938, which describe self-contained setup of controlling devices,and U.S. patent application Ser. Nos. 09/804,623 and 09/615,473 whichdescribe setup of controlling devices by interaction with a Web site. Itwill also be appreciated that a controlling device may be set up tocommand operations of an appliance by being taught the command codesneeded to command such appliance as described in U.S. Pat. No.4,623,887. Still further, it will be understood that a controllingdevice may be upgradeable with additional or revised command data, forexample, by transfer via an external input port as described in theaforementioned U.S. Pat. No. 4,959,810.

While these variously known systems and methods for configuring auniversal controlling device generally work for their intended purpose,a need remains for a system and method that provides a yet moreconvenient and user friendly way for configuring a universal controllingdevice.

SUMMARY OF THE INVENTION

In accordance with this and other needs, the following generallydescribes a system and method for rapid configuration of a universalcontrolling device. To this end, in addition to one or more of thepreviously described configuration methods, a universal controllingdevice may be provisioned with a method by means of which a user, uponentry of information indicative of geographical location or otherregional identity, is presented with a selected set of appliance codesto be tested, such selection based upon known brand and/or modelpopularity for that region. Since in general, for a given market orregion a relatively small number of brands and command code setsrepresent a large segment of the installed base of appliances (theso-called “top 25” rule, or other such number as appropriate for aparticular situation), the approach described above allows a universalcontrolling device provisioned with a single command code library to berapidly configurable “out of the box” across a broad geographicspectrum. Further, as a means to provide complete appliance controlcoverage, such a controlling device library may be supplemented byadditional downloadable command codes sets corresponding to less commonappliances using optional PC and/or Internet based configurationmethods.

Additionally, methods are presented by means of which the configurationof other controlling device options, such as for example the programmingof favorite channel selection buttons or icons of the controllingdevice, may be simplified and/or expedited by the use of such regionaldata.

A better understanding of the objects, advantages, features, propertiesand relationships of the invention will be obtained from the followingdetailed description and accompanying drawings which set forthillustrative embodiments and which are indicative of the various ways inwhich the principles of the invention may be employed.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the various aspects of the invention,reference may be had to preferred embodiments shown in the attacheddrawings in which:

FIG. 1 illustrates a system in which an exemplary controlling device isconfigured to issue operational commands to exemplary controlledappliances according to the principles of the instant invention;

FIG. 2 illustrates a system wherein the exemplary controlling device ofFIG. 1 is placed into communication with a personal computer for thepurpose of perfecting the configuration of the controlling device;

FIG. 3 illustrates a block diagram of exemplary components of theexemplary controlling device of FIG. 1;

FIG. 4 illustrates in flow chart form an exemplary method for on-devicesetup of the exemplary controlling device of FIG. 1;

FIG. 5 illustrates portions of an exemplary user interface which may beinvoked upon the controlling device of FIG. 1 being placed intocommunication with a personal computer as illustrated in FIG. 2;

FIG. 6 illustrates in flow chart form an exemplary method forharmonizing stored configuration settings between the controlling deviceof FIG. 1 and the exemplary personal computer of FIG. 2;

FIG. 7 illustrates an exemplary user interface comprising a menu ofuser-selectable options for editing the configuration of the exemplarycontrolling device of FIG. 1;

FIG. 8 illustrates in flow chart form an exemplary method foridentifying a appropriate command set for an appliance to be controlledby the exemplary controlling device of FIG. 1;

FIG. 9 illustrates portions of an exemplary user interface used inconjunction with the method illustrated in FIG. 8;

FIG. 10 illustrates in flow chart form an exemplary method forconfiguring favorites buttons or icons of the exemplary controllingdevice of FIG. 1; and

FIG. 11 illustrates portions of an exemplary user interface used inconjunction with the method illustrated in FIG. 10.

DETAILED DESCRIPTION

The following describes a system and method by means of which auniversal controlling device, such as a remote control, may beconfigured to command the operation of various consumer electronicappliances. By way of example, FIG. 1 illustrates an exemplary systemwherein a controlling device 100 may be used to command functions ofvarious appliances such as a television 102, an AV receiver 104, a cableor satellite set top box 106, etc. In the embodiment illustrated,controlling device 100 communicates with controlled devices 102, 104,106 via a unidirectional infrared (IR) link, however, as is known in theart, controlling device 100 may be capable of communicating with theseappliances using any convenient IR, RF, point-to-point, or networkedprotocol to cause the appliances to perform operational functions,provided the control protocols and command values to be used incommunicating with a desired appliance are known to the operationalsoftware of controlling device 100.

As illustrated in FIG. 2, controlling device 100 may also beperiodically placed into communication with a personal computer (“PC”)200, for example via a USB port 202 or other suitable connecting means,in order to initiate or perfect the configuration of controlling device100. To this end, a configuration application may be executed by PC 200to upload configuration data from controlling device 100, to provide auser interface 204 for display and selection of configuration options,and to download resulting new and/or modified configuration data tocontrolling device 100. The creation of such new or modifiedconfiguration data may include the use of data stored locally on PC 200and/or data stored on a server 208 and accessed via a wide areacommunication network 206 such as the Internet. As is known in the art,the configuration application executed on PC 200 may without limitationtake the form of a local application, a Java applet, HTML statements,ActiveX controls, etc., or any combination thereof as appropriate.Further all or parts of the various steps performed in the processesinvolved in generating a controlling device configuration may beperformed locally on PC 200 or at a Web service hosted by server 208,without limitation.

While illustrated in the context of a television 102, an A/V receiver104 and a set top box 106, it is to be understood that controllableappliances may include, but are not limited to, televisions, VCRs, DVRs,DVD players, cable or satellite converter set-top boxes (“STBs”),amplifiers, CD players, game consoles, home lighting, drapery, fans,HVAC systems, thermostats, personal computers, etc. It will also beappreciated that, while in the illustrative embodiment a PC 200 isutilized to assist in the configuration of controlling device 100, inalternative embodiments this function may be performed equally well byany other appliance such as, for example, a set top box. Further, whilethe illustrative coupling of controlling device 100 to the configuringappliance is via a wired interface 202, it will be appreciated that inalternative embodiments other coupling means may be employed with equalsuccess, for example wireless connections such as WiFi, Bluetooth,infrared transmission, etc.

With reference to FIG. 3, for use in commanding the functionaloperations of one or more appliances, a controlling device 100 mayinclude, as needed for a particular application, a processor 300 coupledto a ROM memory 304, a RAM memory 302, a key matrix 312 (e.g., hardkeys, soft keys such as a touch sensitive surface overlaid on a liquidcrystal (LCD) or an electroluminescent (EL) display, or some combinationthereof), a transmission circuit 308 and associated IR and/or RF emitter310, a non-volatile read/write memory 306, a means 314 to providefeedback to the user (e.g., one or more visible LEDs, LCD display,speaker, backlighting, and/or the like), a power source 326, aninput/output port 316 such as a serial interface, modem, USB port, etc.,and clock and timer logic 320 with associated crystal or resonator 318.

As will be understood by those skilled in the art, some or all of thememories 302, 304, 306 may include executable instructions(collectively, the program memory) that are intended to be executed bythe processor 300 to control the operation of the remote control 100, aswell as data that serves to define the aforementioned control protocolsand command values to the operational software (collectively, thecommand data). In this manner, the processor 300 may be programmed tocontrol the various electronic components within the remote control 100,e.g., to monitor the power supply 310, to cause the transmission andreception of signals, control visual feedback device(s) 314, etc. All orpart of the non-volatile read/write memory 306, for example an EEPROM,battery-backed up RAM, FLASH, Smart Card, memory stick, or the like, mayadditionally be used to store setup data and parameters as necessary.While the memory 304 is illustrated and described as a ROM memory,memory 304 may also be comprised of any type of readable media, such asROM, FLASH, EEPROM, or the like. Preferably, the memories 304 and 306are non-volatile or battery-backed such that data is not required to bereloaded after battery changes. In addition, the memories 302, 304 and306 may take the form of a chip, a hard disk, a magnetic disk, anoptical disk, and/or the like. Still further, it will be appreciatedthat some or all of the illustrated memory devices may be physicallyincorporated within the same IC chip as the microprocessor 300 (a socalled “microcontroller”) and, as such, they are shown separately inFIG. 3 only for the sake of clarity.

To cause the controlling device 100 to perform an action, controllingdevice 100 is adapted to be responsive to events, such as a sensed userinteraction with the key matrix 312, etc. In response to an event,appropriate instructions within the program memory (hereafter the“operating program”) may be executed. For example, when a function keyis actuated on the controlling device 100, the controlling device 100may retrieve from the command data stored in memory 302, 304, and/or 306the command value and control protocol currently assigned to theactuated function key and the currently assigned device mode to therebytransmit a command to an intended target appliance, e.g., the STB 106 orthe TV 102, in a format recognizable by the intended target appliance.It will also be appreciated that the operating program can be used notonly to cause the transmission of command codes and/or data to theappliances, but also to perform local operations. While not limiting,local operations that may be performed by the controlling device 100 mayinclude displaying information/data, favorite channel setup, macro keysetup, function key relocation, etc. Examples of local operations can befound in U.S. Pat. Nos. 5,481,256, 5,959,751, and 6,014,092. Anadditional local operation is the ability to “lock” function keys acrossdevice operational modes as described in U.S. Published PatentApplication No. 2003/0025840.

Turning now to FIG. 4, an exemplary method for configuring universalcontrolling device 100 is described. Commencing at step 400 upon initialpower up or after user reset of the device, at step 402 a user selects alanguage (for example English/Spanish/French) and a geographical region(for example North America/Europe/Latin America). The geographicalregion may also be automatically determined by the controlling deviceusing any GPS or the like hardware stored thereon. Next, at step 404 theuser selects a target device type (for example TV/Cable Box/AVReceiver). Based upon this information, at step 406 the operatingprogram of controlling device 100 retrieves from its memory a list ofthe most common brands for the specified (or otherwise identified)geographical region and device type (for example, TVs in Latin America).In certain embodiments, this list may be further regionalized accordingto the selected language (for example Europe/English versusEurope/French). An appropriate list of brand names is then displayed topermit user selection of an individual one of the identified commonbrands. If the user's appliance brand is not listed, at step 408 thissetup process is ended and the user is advised at step 420 to connectcontrolling device 100 to a PC and complete the configuration processusing a PC application as described in further detail hereafter.

Once the user has selected a brand from the displayed brand listing, theoperating software of controlling device 100 may identify those commandcode sets within the library of command code sets stored in its memorythat are applicable to the selected brand, geographical region, anddevice type (for example Samsung/North America/TV). The operatingsoftware may then issue a series of prompts which guide the user througha process whereby the identified command code sets are tested one by one(either manually or automatically) against the target appliance, forexample by the controlling device using each command code set totransmit a response-evoking command such as “mute” or “power,” until thecorrect command code set is identified, i.e., the target device respondsto a transmitted command. If during this process no compatible code setis identified as being appropriate for commanding the target device, thesetup process is ended and as described previously the user is advisedto complete the configuration process by connecting controlling device100 to a PC as described hereafter.

If a compatible command code set is found during the testing process,then at step 414 the user is presented with the opportunity to repeatthe above process for another device. In this manner, a user mayconfigure controlling device 100 to communicate with all their items ofequipment 102, 104, 106, etc. Once all desired target equipment has beenconfigured on the controlling device 100, at step 416 the user is giventhe opportunity to configure other locally supported features ofcontrolling device 100, for example designating that all volume controlcommands be issued to a single device such as AV receiver 104,programming quick access keys for favorite channels, etc. Finally, atstep 422 the user is reminded that additional configuration options maybe available by connecting controlling device 100 to a PC.

It will be appreciated that regional information may also be used toprovide the controlling device 100 with regionally relevant languageand/or key layout settings, e.g., key layout displays and/or key commandassignments, during the controlling device 100 configuration process asdescribed, for example, in U.S. application Ser. No. 12/421,065 at page77, line 17-page 79, line 2.

With reference to FIG. 2, upon detection by PC 200 that a controllingdevice 100 has been connected therewith, a configuration application 204may be automatically invoked as is well known in USB art. Configurationapplication 204 may commence with a screen display 500 as illustrated inFIG. 5 which includes an image 508 of the controlling device justconnected—by way of confirmation to a user that the type and model oftheir controlling device has been correctly identified by configurationapplication 204—together with a selection of possible actions to beperformed 502, 504, 506. As will be described in further detail inconjunction with the flowchart of FIG. 6, the list of possible actionspresented to the user may vary depending upon the respective status ofthe controlling device's current configuration and that ofconfiguration(s) previously stored by configuration application 204. Inthis regard, it will be appreciated that in various embodiments suchstored configurations may be located locally on PC 200, remotely onserver 208, or a combination thereof, as appropriate. It will also beappreciated that in certain embodiments the ability to select one ofmultiple stored configurations may be offered. With reference to FIG. 6,when a controlling device is connected at step 600, its currentconfiguration data is retrieved at step 602. Next, in an exemplaryembodiment, steps 604, 606, 608 and 610 perform a harmonizationalgorithm to determine which possible actions are to be offered to theuser, as follows:

Controlling device configured, no stored configuration: Create a newconfiguration, or use the existing configuration from the controllingdevice (step 612). Controlling device configured, stored configurationpresent which is different from that of the controlling device: Possibleactions: Create a new configuration, use the existing configuration fromthe controlling device, or use the existing stored configuration (step614).

Controlling device configured, stored configuration present which is thesame as that of the controlling device: Possible actions: Create a newconfiguration, or use the existing stored configuration (step 616).

Controlling device not configured, stored configuration present:Possible actions: Create a new configuration, or use the existing storedconfiguration (step 616).

Controlling device not configured, no stored configuration: Possibleactions: Create a new configuration (step 618).

If a user selects the “upload” option in either of steps 612 or 614, atstep 620 the configuration data retrieved from the controlling device isused to update the stored configuration data. As illustrated by warningmessage 520, in cases where this action will result in the overwritingof previously-saved configuration data, a user confirmation may berequested before the action is performed.

If a user selects the “new” option in either of steps 614, 616, or 618,at step 626 the configuration settings are initialized to default valuesand a first time setup is initiated. By way of example, withoutlimitation, such a first time setup may comprise entry of a name for theconfiguration, user profile data, equipment types, region and languageinformation, etc. Thereafter, at step 628 a user may be presented with amain menu of configuration editing options, in the same manner as a userwho had selected the “edit” option at steps 614 or 616.

With reference to FIG. 7, an exemplary main menu of configurationediting options 700 may include options 702 to allow a user to add,modify, or delete devices; 704 to allow a user to add, modify, or deleteactivities; 706 to allow a user to add, modify, or delete favorites keysof the controlling device; or 708 to allow a user to configure specialoptions such as volume lock or macro sequences. In the illustrativeembodiment, upon completion of all desired editing activity, userselection of icon 710 “Download to Remote” may result in the loading ofthe updated configuration data into connected controlling device 100,step 630 of the flowchart of FIG. 6, after which at step 640 controllingdevice 100 may be disconnected from PC 200 and all actions completed.

Turning now to FIG. 8, an exemplary method for adding an appliance to becontrolled via the use of a PC based configuration application isillustrated in flowchart form. Initiation of this process 800 may occurautomatically upon connection of a controlling device which experiencedan unsuccessful on-board setup, i.e., reached step 420 in the flowchartof FIG. 4, or may be in response to user selection of the “Add device”option 712 from an exemplary main menu 700 of a configurationapplication. At step 802, brand and/or model information is received.This information may comprise data uploaded from controlling device 100,for example type and brand information selected by a user at steps 404through 408 of FIG. 4, or may comprise information entered by a userdirectly into PC 200, or a combination thereof. At step 804 a databaseof command codes is searched for a match against the received type,brand, and model information. Such a database of codes may be locatedlocally on PC 200 or may be located at a remote server 208, or acombination thereof. At step 808, if an unambiguous match is found, thatis the brand and model data corresponding to one and only one commandcode set is an exact match for the brand and model information receivedat step 802, at step 822 the matched command code set is entered intothe current configuration. In this regard, it will be appreciated thatsuch a configuration entry may comprise a pointer or pointers to commandcode data determined to be already pre-programmed into memories 302,304, 306 of controlling device 100; an entirely new command data set fordownload; or a combination thereof. If on the other hand, an unambiguousmatch cannot be made, for example the user supplied incomplete or nomodel information, the brand or model was not found in the database,etc., then at step 810 a set of sample codes may be prepared and loadedinto controlling device 100. Determination of the contents of such asample set of codes may be based, for example, on similar model numberswithin the same brand, most likely code sets for a given brand, knownmost popular codes or brands for a particular installed base, etc. Thisdetermination may be further influenced by geographic or demographicinformation, such as language and region data entered into controllingdevice 100 during initial setup at step 402, localization parametersstored as part of the operating system configuration of PC 200, datasolicited directly from the user as part of a registration process, etc.The sample codes used may comprise subsets of complete appliance commandcode sets, or may comprise complete command sets, as appropriate for agiven embodiment—for example, depending on the amount of available freememory space in controlling device 100. Once the sample codes are loadedinto controlling device 100, at step 812 the user may be prompted todisconnect the controlling device from the PC and test the codes, asillustrated by the exemplary display 900 of FIG. 9. After disconnection,the PC based configuration application may wait at step 814 forreconnection of the controlling device upon completion of testing. Asillustrated by step 816, the application may include a time out whichmay cause the configuration application to exit this mode of operationif the controlling device has not been reconnected within some period oftime, for example 30 minutes.

User testing of the downloaded sample codes on controlling device 100may be conducted in a manner similar to that previously described inconnection with steps 410 and 412 of FIG. 4. Upon reconnection of thecontrolling device and activation of exemplary “Continue” icon 902, atstep 818 the status of controlling device 100 is checked to verify thattesting of the sample code set was completed and a code selected. Ifnot, at step 820 an error message is displayed, for example asillustrated by 904 of FIG. 9, and processing continues at step 812 wherethe user is once again prompted to disconnect the controlling devicefrom the PC and test the sample codes. If an appropriate code set hasbeen identified, processing proceeds at step 822 where the identifiedcommand code set is entered into the current configuration as previouslydescribed.

Turning now to FIG. 10, an exemplary method for configuring favoritesbuttons or icons of the controlling device is illustrated in flowchartform. In this regard, it will be understood that favorites keys are keysin the key matrix of the controlling device that have been designated bya user and/or provider for use in controlling favorite operations of atarget device, e.g., to cause a device to tune to a favorite channel.Initiation of this process 1000 may be in response to user selection ofa “Modify favorites” option 714 from an exemplary main menu 700 of aconfiguration application. In certain embodiments, initiation process1000 may also occur automatically upon connection of a controllingdevice with an as-yet unconfigured favorites buttons or icons. Onceinitiated, at step 1002 it is determined if the favorites data of thisparticular controlling device configuration is not currently configured,such as may occur for example when a new controlling device is firstconnected, or when the configuration data has been reset, etc. If thefavorites data is presently configured, at step 1018 the currentconfigurations are displayed and the user may edit individualassignments, for example by selecting a line item 716 in a display offavorites data similar that illustrated at 706. If favorites data is notyet configured, at step 1004 the geographical region in which thecontrolling device is located may be determined. In various embodimentsthis region information may be derived from location and/or languagedata entered into controlling device 100 during initial setup at step402, localization parameters stored as part of the operating systemconfiguration of PC 200, obtained from the user as part of aregistration process, obtained from GPS or the like hardware on theplatform, directly solicited from the user as part of this step asillustrated for example by display 1100 of FIG. 11, or any combinationthereof. At step 1006, it is then determined if favorites data, forexample a listing of the most popular broadcast media, is available forthe selected region either locally on PC 200 or from remote server 208.If not, manual configuration of favorites is required and processingcontinues at step 1018. If favorites data is available, the availablefavorites buttons or icons are automatically populated with this data,i.e. the names, and if available, logos of regional content providers.Next at step 1010, it may be determined if service information, i.e.,channel line ups for cable providers, satellite providers, over the air,etc. is available for the selected region, either locally on PC 200 orfrom a remote server 208. If not, manual configuration of favoriteschannel number assignments and tuning device is required and processingcontinues at step 1018. Once again, such information may be derived fromlocation and/or language data entered into controlling device 100 duringinitial setup at step 402, localization parameters stored as part of theoperating system configuration of PC 200, obtained from the user as partof a registration process, directly solicited from the user as part ofthis step, etc., or any combination thereof. If not, manualconfiguration of favorites channel number assignments and tuning deviceis required and processing continues at step 1018. If serviceinformation is available, at step 1012 the service in use may beselected. This selection may be made automatically based on region,controlled appliance configuration, e.g., type of set top box to becontrolled, user entered registration information, solicited directly bythe user from a drop-down list of choices, or any combination thereof.Next, at step 1014 it is determined if channel line up information isavailable for the selected service provider, either locally on PC 200 orfrom a remote server 208. If not, manual configuration of favoriteschannel number assignments is required and at step 1020 the user isprompted to provide this information, for example as illustrated bydisplay 1110 of FIG. 11. If channel line up information is howeveravailable, at step 1016 the channel numbers associated with thepreviously assigned favorite content providers are configured and thedefault configuration process is complete. As will be appreciated, invarious embodiments the step of configuring channel numbers may comprisedirectly assigning appropriate command code values to particularfavorites keys; or may comprise assigning identifying data such asnumeric values, pointers, key codes, etc., which may be used by theoperating program of controlling device 100 to retrieve appropriatecommand code values from command code data stored in some or all of thememories 302, 304, 306. Thereafter, at step 1018 the user is afforded anopportunity to review the default assignments and edit them if desired,after which favorites setup is complete at step 1022, and the updatedconfiguration is ready for download into a connected controlling device100 upon user command as previously described in connection with icon710 illustrated in FIG. 7.

While various concepts have been described in detail, it will beappreciated by those skilled in the art that various modifications andalternatives to those concepts could be developed in light of theoverall teachings of the disclosure. For example, in an alternateembodiment, geographic region information regarding the location of thesystem illustrated in FIGS. 1 and 2 may be automatically determined byserver 208 based upon the IP address associated with PC 200, as is knownin the art. Such information may be relayed back to a configurationapplication running on PC 200 for use in configuring controlling device100 as previously described. Additionally, in some embodiments theselection by the operating program of controlling device 100 or theconfiguration application of PC 200 of a group of sample appliancecommand code sets to be tested may be conditioned by additional factorsother than geographic region. For example, the selection by the user ofa particular brand, model or command code set for one appliance type(e.g., their TV) may influence the selection or order of presentation ofthe sample command code sets offered during setup of a differentappliance type (e.g., an AV receiver) based upon known consumerpreferences for particular equipment combinations or pairings. Further,although presented in an illustrative embodiment as a standalone remotecontrol, it will be understood that the functionality associated withcontrolling device 100 may be implemented as an optional or integralfeature of another portable device, such as for example a PDA, cellularphone, etc.

Further, while described in the context of functional modules andillustrated using block diagram format, it is to be understood that,unless otherwise stated to the contrary, one or more of the describedfunctions and/or features may be integrated in a single physical deviceand/or a software module, or one or more functions and/or features maybe implemented in separate physical devices or software modules. It willalso be appreciated that a detailed discussion of the actualimplementation of each module is not necessary for an enablingunderstanding of the invention. Rather, the actual implementation ofsuch modules would be well within the routine skill of an engineer,given the disclosure herein of the attributes, functionality, andinter-relationship of the various functional modules in the system.Therefore, a person skilled in the art, applying ordinary skill, will beable to practice the invention set forth in the claims without undueexperimentation. It will be additionally appreciated that the particularconcepts disclosed are meant to be illustrative only and not limiting asto the scope of the invention which is to be given the full breadth ofthe appended claims and any equivalents thereof.

All patents cited within this document are hereby incorporated byreference in their entirety.

1. A computer-implemented method for making a selection for a channelcontrol system through a computing device, the method comprising:receiving configuration information, the configuration informationincluding model information associated with the channel control system;receiving, from the computing device, a request for an infrared code toperform a television function on the configured channel control system;determining an internet protocol (“IP”) address associated with thecomputing device; receiving a location identifier associated with the IPaddress; receiving a television service provider identifier associatedwith the location identifier; receiving a television function identifierbased on the television service provider identifier; selecting theinfrared code including instructions to perform the television functionon the channel control system; and transmitting the infrared code to thecomputing device.
 2. The computer-implemented of claim 1, wherein thetelevision service provider identifier is the identity of a serviceprovider operating at a location associated with the locationidentifier.
 3. The computer-implemented method of claim 1, wherein theinfrared code is selected based on the configuration information and thetelevision function identifier.
 4. A computer-implemented method formaking a selection for a channel control system through a computingdevice comprising: receiving a request for an infrared code to perform atelevision function on the channel control system; determining aninternet protocol (“IP”) address associated with the computing device;receiving a location identifier associated with the IP address;receiving a television service provider identifier based on the locationidentifier; receiving a television function identifier; selecting theinfrared code including instructions to perform the television functionon the channel control system; and transmitting the infrared code. 5.The method of claim 4, further comprising: receiving configurationinformation, the configuration information including informationassociated with the channel control system.
 6. The method of claim 4,wherein the channel control system is configured on at least one of atelevision, a set-top box, and a digital video recorder.
 7. The methodof claim 4, wherein the television function comprises selecting atelevision channel for the channel control system.
 8. The method ofclaim 7, wherein the television channel includes digitally-distributedtelevision channels obtained through online streaming.
 9. The method ofclaim 4, wherein the television function identifier is based on thetelevision service provider identifier.
 10. The method of claim 9,wherein the television service provider identifier is selected from aset of television service provider identifiers based on an associationof the television service provider identifier with a television serviceprovider operating at the location associated with the locationidentifier.
 11. The method of claim 4, wherein receiving a televisionfunction identifier further comprises: transmitting a television serviceprovider identifier; receiving electronic program guide informationassociated with the television service provider identifier; and whereinthe television function identifier is based on the electronic programguide information.
 12. A system for making a selection for a channelcontrol system through a computing device, the system comprising: anon-transitory computer-readable storage medium storing executablemodules including: a configuration module, the configuration moduleconfigured to receive configuration information including modelinformation associated with the channel control system; a locationmodule, the location module configured to determine a locationidentifier for the computing device in response to receiving a requestfrom the computing device for an infrared code to perform a televisionfunction on the channel control system; a service provider module, theservice provider module configured to determine a television serviceprovider identifier based on the location identifier; a program guidemodule, the program guide module configured to determine a televisionfunction identifier based on the television service provider identifier;and an IR code module, the IR code module configured to select theinfrared code based on the television function identifier, the infraredcode configured to perform the television function on the channelcontrol system; and a processor for executing the modules.
 13. Thesystem of claim 12, wherein the infrared code is specific to the channelcontrol system associated with the configuration information.
 14. Thesystem of claim 12, wherein the location identifier is determined basedon an internet protocol address associated with the computing device.15. The system of claim 12, wherein the service provider moduledetermines the television service provider identifier from a set oftelevision service provider identifiers based on an association of thetelevision service provider identifier with a television serviceprovider operating at the location associated with the locationidentifier.
 16. The system of claim 12, wherein the program guide moduledetermines the television function identifier based on electronicprogram guide information associated with the television serviceprovider identifier.
 17. A computer program product comprising anon-transitory computer readable storage medium, the computer programproduct further comprising executable instructions, the instructionswhen executed by a processor causing the processor to: receive a requestfor an infrared code from a computing device associated with a channelcontrol system, the request to perform a television function on thechannel control system through the computing device; determine aninternet protocol (“IP”) address associated with the computing device;receive a location identifier associated with the IP address; receive atelevision service provider identifier based on the location identifier;receive a television function identifier; select the infrared codeincluding instructions to perform the television function on the channelcontrol system; and transmit the infrared code.
 18. The computer programproduct of claim 17, further comprising instructions that cause theprocessor to: receive configuration information, the configurationinformation including model information for the channel control system.19. The computer program product of claim 17, wherein the televisionfunction comprises selecting a television channel for the channelcontrol system.
 20. The computer program product of claim 18, whereinthe television channel includes digitally-distributed televisionchannels obtained through online streaming.
 21. The computer programproduct of claim 18, wherein the channel control system is configured onat least one of a television, a set-top box, and a digital videorecorder.
 22. The computer program product of claim 17, wherein thetelevision function identifier is based on the television serviceprovider identifier.
 23. The computer program product of claim 17,wherein the television service provider identifier is selected from aset of television service provider identifiers based on an associationof the television service provider identifier with a television serviceprovider operating at the location associated with the locationidentifier.
 24. The computer program product of claim 17, furthercomprising instructions that cause the processor to: transmit atelevision service provider identifier; receive electronic program guideinformation based on the television service provider identifier; andwherein the television function identifier is based on the electronicprogram guide information.
 25. The method of claim 5, wherein theinfrared code is selected based on the configuration information and thetelevision function identifier.
 26. The system of claim 12, wherein theinfrared code is further selected based on the configuration informationassociated with the channel control system.
 27. The computer programproduct of claim 18, wherein the infrared code is selected based on theconfiguration information and the television function identifier.
 28. Acomputer-implemented method for making a selection for a channel controlsystem through a computing device comprising: receiving a request for atransmission code to perform a television function on the channelcontrol system; determining an internet protocol (“IP”) addressassociated with the computing device; receiving a location identifierassociated with the IP address; receiving a television service provideridentifier based on the location identifier; receiving a televisionfunction identifier; selecting the transmission code includinginstructions to perform the television function on the channel controlsystem; and transmitting the transmission code.
 29. The method of claim28, wherein the transmission code comprises a radio frequency (RF)protocol transmission code.
 30. The method of claim 28, wherein thetransmission code comprises a point-to-point protocol transmission code.31. The method of claim 28, wherein the transmission code comprises anetwork protocol transmission code.
 32. The method of claim 28 furthercomprising: receiving configuration information, the configurationinformation including information associated with the channel controlsystem.
 33. The method of claim 28, wherein the channel control systemis configured on at least one of a television, a set-top box, and adigital video recorder.
 34. The method of claim 28, wherein thetelevision function comprises selecting a television channel for thechannel control system.
 35. The method of claim 34, wherein thetelevision channel includes digitally-distributed television channelsobtained through online streaming.
 36. The method of claim 28, whereinthe television function identifier is based on the television serviceprovider identifier.
 37. The method of claim 36, wherein the televisionservice provider identifier is selected from a set of television serviceprovider identifiers based on an association of the television serviceprovider identifier with a television service provider operating at thelocation associated with the location identifier.
 38. The method ofclaim 28, wherein receiving a television function identifier furthercomprises: transmitting a television service provider identifier;receiving electronic program guide information associated with thetelevision service provider identifier; and wherein the televisionfunction identifier is based on the electronic program guideinformation.